package main

import "fmt"

func main()  {
	arr:= []int{6,5,8,9,2,3}
	fmt.Println(selectSort(arr))
}

/**
 选择排序，每次选择数组中最小值，放入另一个数组，时间复杂度O(n²)
 */
func selectSort(arr []int) []int {
	var res []int = make([]int, len(arr))
	len:=len(arr)
	for i := 0; i < len; i++ {
		res[i] = selectSmallest(&arr)
	}
	return res
}

/**
 找出剩余数组元素中最小的
 */
func selectSmallest(arr *[]int) int{
	smallest:= (*arr)[0]
	smallestIndex:= 0
	len:=len(*arr)
	for i := 1; i < len; i++ {
		if smallest>(*arr)[i]{
			smallest = (*arr)[i]
			smallestIndex = i
		}
	}
	//移除选中的最小值
	*arr = append((*arr)[:smallestIndex],(*arr)[smallestIndex+1:]...)
	return smallest
}